package com.quick.develop.flowable.service.task;

import com.quick.develop.flowable.domain.activity.BpmActivityRespVO;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.runtime.ActivityInstance;

import java.util.List;
import java.util.Map;

/**
 * @author junyuan.liu
 * @description: 
 * @date 2022/5/2 14:18
 */
public interface IBpmActivityService {
    /** 
     * @description   获得指定流程历史活动节点列表
     * @param processInstanceId 流程实例ID
     * @return java.util.List<BpmActivityRespVO>
     * @author junyuan.liu
     * @date 2022/5/2 14:18
     */ 
    List<BpmActivityRespVO> getHisActivityListByProcessInstanceId(String processInstanceId);

    /** 
     * @description  根据流程实例ID获取流程历史活动节点列表
     * @param processInstanceId 流程实例ID
     * @return java.util.List<HistoricActivityInstance>
     * @author junyuan.liu
     * @date 2022/7/5 19:50
     */ 
    List<HistoricActivityInstance> getHistoricActivityListByProcessInstanceId(String processInstanceId);

    /** 
     * @description  获得指定流程历史运行节点列表
     * @param processInstanceId 流程实例ID
     * @return java.util.List<org.flowable.engine.runtime.ActivityInstance>
     * @author junyuan.liu
     * @date 2022/6/30 13:53
     */ 
    List<ActivityInstance> getActivityListByProcessInstanceId(String processInstanceId);
    
    /** 
     * @description  当前流程是否处于调用活动节点 且调用活动是否全部完成
     * @param processInstanceId 流程实例ID
     * @return java.lang.Boolean
     * @author junyuan.liu
     * @date 2022/6/30 14:32
     */ 
    Boolean isCallActivityFinished(String processInstanceId);
    
    /** 
     * @description  获取流程执行过程 包含处理意见方式
     * @param processInstanceId 流程实例ID
     * @return java.util.Map<java.lang.String,java.util.List<com.quick.develop.flowable.domain.activity.BpmActivityRespVO>>
     * @author junyuan.liu
     * @date 2022/7/6 9:18
     */ 
    Map<String, List<BpmActivityRespVO>> getBpmViewer(String processInstanceId);
    
    /** 
     * @description 获取正在运行的活动列表
     * @param processInstanceId 流程实例ID
     * @return java.util.List<com.quick.develop.flowable.domain.activity.BpmActivityRespVO>
     * @author junyuan.liu
     * @date 2022/9/18 11:27
     */ 
    List<BpmActivityRespVO> getRunActivityList(String processInstanceId);
    
    
    
}
